1. Technical Field
This application relates to the field of storing data, and more particularly to the field of providing services in connection with data storage.
2. Description of Related Art
Modern storage systems aim to simplify and automate data management functions in storage systems in order to decrease the total costs of ownership. One approach is to incorporate in the storage system a set of data management services that cooperate to assure data integrity, availability, and durability in accordance with the specified Service Level Objectives (SLOs), as well as to provide other value-add services that take on some of the work done previously by standalone data management applications. The data management services range from ones focused on data protection, availability and integrity, e.g. synchronous replication, data immutability, RAID (including software erasure coding techniques), versioning, snapshots, backup, and asynchronous replication for Disaster Recovery (DR), to ones that improve application performance and take on some aspects of application functionality, e.g. asynchronous space reclamation, object encryption, and auto-deletion of objects based on object age.
Many system designers choose to implement the increasing number of such services in software, due to the ever increasing cheap CPU power and memory space/bandwidth in modern COTS clusters. With these design choices, comes the increased storage system software complexity and increased complexity of the management interfaces for controlling these distributed software storage services in a distributed (cluster-based) storage system. The system complexity increases costs, and the interface complexity contributes to errors in service configuration that might result in data loss.
Further, traditional storage services may be static in their functionality and are defined per device, file system, or a namespace sub-tree. This approach may be suboptimal, as the end user and applications does not have an option to adapt services to their needs. Moreover, the device or file system scope is often not directly visible to end user and/or application, and the namespace layout is often dictated by application-level requirements that are orthogonal to storage services concerns. Also, various types of services may offer custom ways to define object the service operates on, to configure/control service implementation mechanisms. Therefore, service management (definition, deployment, modification/re-deployment, retiring) may be hard to unify. In addition, the service management may be tightly coupled with the storage system so that it is difficult to manage services in environments that call for federation of several storage systems.
Accordingly, it is desirable to provide a system that addresses the issues set forth above.